Port Knocking
Ce guide explique comment mettre en place une séquence de Port Knocking pour ouvrir dynamiquement l’accès au port d’un routeur MikroTik uniquement après réception de knocks spécifiques.
🚀 Objectif
Mettre en place un système où :
- Tous les ports sensibles (ex. SSH) sont fermés par défaut.
- Une séquence de ports (ex. 1234 → 2345 → 3456) doit être “tapée” dans l’ordre.
- Après knocks corrects, le routeur ouvre temporairement le port SSH pour l’IP du client.
📌 Prérequis
- Un routeur MikroTik RouterOS (v6 ou v7)
- WinBox installé
- Droits administratifs sur le routeur
- Un client pour envoyer les knocks (Windows, Linux, Android…)
🛠️ Étapes d’installation
1️⃣ Créer des adresses lists
Créer via WinBox → IP → Firewall → Address Lists :
knock1knock2allowed
2️⃣ Ajouter les règles de knocks
Knock 1 : Port 1234
Chain: input
Protocol: tcp
Dst. Port: 1234
Action: add-src-to-address-list → knock1 (timeout 20s)
Terminal
/ip firewall filter add chain=input protocol=tcp dst-port=1234 action=add-src-to-address-list address-list=knock1 address-list-timeout=20s
Knock 2 : Port 2345 (nécessite knock1)
Chain: input
Protocol: tcp
Dst. Port: 2345
Src. Address List: knock1
Action: add-src-to-address-list → knock2 (timeout 20s)
Terminal
/ip firewall filter add chain=input protocol=tcp dst-port=2345 action=add-src-to-address-list address-list=knock2 address-list-timeout=20s
Knock 3 : Port 3456 → Autorisation
Chain: input
Protocol: tcp
Dst. Port: 3456
Src. Address List: knock2
Action: add-src-to-address-list → allowed (timeout 5m)
Terminal
/ip firewall filter add chain=input protocol=tcp dst-port=3456 src-address-list=knock2 action=add-src-to-address-list address-list=allowed address-list-timeout=5m
Maintenant, on a ajouté l'adresse ip dans la liste des allowed toutes les règles qui utilisent cette liste sont concernées.
🚨 2. Port Scanner Detection (détection Nmap, masscan, etc.)
MikroTik permet de détecter automatiquement les comportements suspects liés aux scans de port.
🔍 Objectif
- Identifier les IP qui tentent un scan de ports (SYN scan, FIN scan, Xmas scan…)
- Les ajouter dans une liste
port_scanners - Les bloquer automatiquement pour une durée donnée (ex : 1 jour)
🟦 1️⃣ Créer une address list port_scanners
/ip firewall address-list add list=port_scanners comment="IP détectées en scan"
🟥 2️⃣ Ajouter les règles de détection de scans
Détection SYN Scan
Pas utilisé
/ip firewall filter add chain=input protocol=tcp tcp-flags=syn,!ack action=add-src-to-address-list address-list=port_scanners address-list-timeout=1d
Détection FIN Scan
Pas utilisé
/ip firewall filter add chain=input protocol=tcp tcp-flags=fin action=add-src-to-address-list address-list=port_scanners address-list-timeout=1d
Détection Xmas Scan
Pas utilisé
/ip firewall filter add chain=input protocol=tcp tcp-flags=fin,psh,urg action=add-src-to-address-list address-list=port_scanners address-list-timeout=1d
Détection Null Scan
Pas utilisé
/ip firewall filter add chain=input protocol=tcp tcp-flags=!syn,!ack,!fin,!rst action=add-src-to-address-list address-list=port_scanners address-list-timeout=1d
Détection trop nombreuses connexions
Pas utilisé préfère PDS ci-dessous
/ip firewall filter add chain=input protocol=tcp connection-limit=30,32 action=add-src-to-address-list address-list=port_scanners address-list-timeout=1d
Détection Port scanning
Détect la quantité de port scanné avec un même ip
créer une règle input avec dans l'onglet Extra

Dans Action: 'add src to address list' et address List = port-Scanners
🛑 3️⃣ Bloquer les IP détectées avec la détection des ports scanning
/ip firewall filter add chain=input src-address-list=port_scanners action=drop
📊 4️⃣ Vérifier les IP détectées
/ip firewall address-list print where list=port_scanners
🧠 Comprendre les différents types de scans
🔹 SYN Scan
- Envoie un paquet SYN pour tester un port, sans terminer la connexion.
- Très utilisé par les scanners car furtif.
🔹 FIN Scan
- Envoie un FIN seul, normalement utilisé pour fermer une connexion.
- Comportement anormal → probable scan.
🔹 Xmas Scan
- Combine FIN + PSH + URG (le paquet “sapin de Noël” 🎄).
- Jamais vu dans un trafic normal.
🔹 Null Scan
- Envoie un paquet TCP sans aucun flag.
- Totalement impossible dans une communication légitime.